/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package games.patience.core;

import commomgame.RulesOfMovement;
import commomgame.SubRegion;

/**
 *Classe que representa uma especialização de RulesOfMoviment, ou seja, esta extende a classe mãe.
 * Esta é responsável por controlar a movimentação das cartas que podem ser inseridas nas subregiões de Reservas, logo,
 * contem a implementação das regras de reservas.
 * 
 * @author Igo Amauri e Fernanda
 */
public class RulesOfReserves extends RulesOfMovement {

    @Override
    public boolean verifyMovement(int value, String nipe, SubRegion originRegion, SubRegion targetRegion) {


        if (this.isEmptyStack(targetRegion)) {
            if (this.isK(value)) {
                targetRegion.addCardsAfterMovement(originRegion.selectCard(value, nipe), originRegion);
                originRegion.removeCard(originRegion.selectCard(value, nipe));
                if (!originRegion.setOfCard.isEmpty()) {
                    originRegion.setOfCard.get(0).setIsShowed(true);
                }
                return true;
            }
        } else {
            if (this.isAlternatedColor(targetRegion, nipe)) {
                if (this.isDescendent(targetRegion, value)) {
                    targetRegion.addCardsAfterMovement(originRegion.selectCard(value, nipe), originRegion);
                    originRegion.removeCard(originRegion.selectCard(value, nipe));
                    if (!originRegion.setOfCard.isEmpty()) {
                        originRegion.setOfCard.get(0).setIsShowed(true);
                    }
                    return true;
                }
            } else {
                return false;
            }
        }
        return false;


        //Empilha:

        //se a carta movida for k e a pilha estiver vazia
        //se for na ordem descendente e a cor alternada 
    }
}
